home *** CD-ROM | disk | FTP | other *** search
/ Mac Format 1994 October / Macformat17.cdr / Shareware City / Developers / shutdown-fx-201-c / sfx ƒ / sfx startup app ƒ / sfx code ƒ / sfx gestalt.c < prev    next >
Text File  |  1994-07-11  |  4KB  |  143 lines

  1. /**********************************************************************\
  2.  
  3. File:        sfx gestalt.c
  4.  
  5. Purpose:    This module handles our gestalt selector function for
  6.             setting & getting the addresses of our fade procedure,
  7.             shutdown proc, and restart proc.
  8.  
  9. This program is free software; you can redistribute it and/or modify
  10. it under the terms of the GNU General Public License as published by
  11. the Free Software Foundation; either version 2 of the License, or
  12. (at your option) any later version.
  13.  
  14. This program is distributed in the hope that it will be useful,
  15. but WITHOUT ANY WARRANTY; without even the implied warranty of
  16. MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
  17. GNU General Public License for more details.
  18.  
  19. You should have received a copy of the GNU General Public License
  20. along with this program in a file named "GNU General Public License".
  21. If not, write to the Free Software Foundation, 675 Mass Ave,
  22. Cambridge, MA 02139, USA.
  23.  
  24. \**********************************************************************/
  25.  
  26. #include "GestaltEQU.h"
  27. #include "sfx gestalt equ.h"
  28. #include "sfx gestalt.h"
  29. #include "program globals.h"
  30.  
  31. short MakeNewGestaltSelectors(void)
  32. {
  33.     Handle            theProcHandle;
  34.     Ptr                theGestaltFunction;
  35.     unsigned long    theSize;
  36.     OSErr            gestaltError;
  37.     
  38.     theProcHandle=Get1Resource('PROC', 11);        /* get gestalt selector function */
  39.     if ((ResError()!=noErr) || (theProcHandle==0L))
  40.         return kCantGetProc11Resource;
  41.     
  42.     if (*theProcHandle==0L)
  43.         LoadResource(theProcHandle);
  44.     if (*theProcHandle==0L)
  45.         return kCantGetProc11Resource;
  46.     
  47.     theProcHandle=StripAddress(theProcHandle);
  48.     *theProcHandle=StripAddress(*theProcHandle);
  49.     
  50.     theGestaltFunction=NewPtrSys(theSize=GetHandleSize(theProcHandle));
  51.     if (theGestaltFunction==0L)
  52.         return kNoMemoryInSystemHeap;
  53.     
  54.     theGestaltFunction=StripAddress(theGestaltFunction);
  55.     
  56.     BlockMove(*theProcHandle, theGestaltFunction, theSize);
  57.     ReleaseResource(theProcHandle);
  58.     theProcHandle=0L;
  59.     
  60.     gestaltError=NewGestalt(sfxGetVersion, theGestaltFunction);
  61.     if (gestaltError!=noErr)
  62.         return kCantMakeNewGestalt;
  63.     
  64.     gestaltError=NewGestalt(sfxGetFadeProcPtr, theGestaltFunction);
  65.     if (gestaltError!=noErr)
  66.         return kCantMakeNewGestalt;
  67.     
  68.     gestaltError=NewGestalt(sfxGetShutdownProcPtr, theGestaltFunction);
  69.     if (gestaltError!=noErr)
  70.         return kCantMakeNewGestalt;
  71.  
  72.     gestaltError=NewGestalt(sfxGetRestartProcPtr, theGestaltFunction);
  73.     if (gestaltError!=noErr)
  74.         return kCantMakeNewGestalt;
  75.     
  76.     gestaltError=NewGestalt(sfxGetFadeProcPtrAddress, theGestaltFunction);
  77.     if (gestaltError!=noErr)
  78.         return kCantMakeNewGestalt;
  79.  
  80.     gestaltError=NewGestalt(sfxGetShutdownProcPtrAddress, theGestaltFunction);
  81.     if (gestaltError!=noErr)
  82.         return kCantMakeNewGestalt;
  83.     
  84.     gestaltError=NewGestalt(sfxGetRestartProcPtrAddress, theGestaltFunction);
  85.     if (gestaltError!=noErr)
  86.         return kCantMakeNewGestalt;
  87.     
  88.     return allsWell;
  89. }
  90.  
  91. short SetGestaltProcPtrs(ProcPtr fadeProcPtr, ProcPtr shutdownProcPtr,
  92.     ProcPtr restartProcPtr)
  93. {
  94.     OSErr            gestaltError;
  95.     long            theAddress;
  96.     
  97.     gestaltError=Gestalt(sfxGetFadeProcPtrAddress, &theAddress);
  98.     if (gestaltError!=noErr)
  99.         return kGestaltImproperlyInstalled;
  100.     *((ProcPtr*)theAddress)=fadeProcPtr;
  101.     
  102.     gestaltError=Gestalt(sfxGetShutdownProcPtrAddress, &theAddress);
  103.     if (gestaltError!=noErr)
  104.         return kGestaltImproperlyInstalled;
  105.     *((ProcPtr*)theAddress)=shutdownProcPtr;
  106.     
  107.     gestaltError=Gestalt(sfxGetRestartProcPtrAddress, &theAddress);
  108.     if (gestaltError!=noErr)
  109.         return kGestaltImproperlyInstalled;
  110.     *((ProcPtr*)theAddress)=restartProcPtr;
  111.     
  112.     return allsWell;
  113. }
  114.  
  115. short GetGestaltProcPtrs(ProcPtr *fadeProcPtr, ProcPtr *shutdownProcPtr,
  116.     ProcPtr *restartProcPtr)
  117. {
  118.     OSErr            gestaltError;
  119.     
  120.     gestaltError=Gestalt(sfxGetFadeProcPtr, fadeProcPtr);
  121.     if (gestaltError!=noErr)
  122.         return kGestaltImproperlyInstalled;
  123.     
  124.     gestaltError=Gestalt(sfxGetShutdownProcPtr, shutdownProcPtr);
  125.     if (gestaltError!=noErr)
  126.         return kGestaltImproperlyInstalled;
  127.     
  128.     gestaltError=Gestalt(sfxGetRestartProcPtr, restartProcPtr);
  129.     if (gestaltError!=noErr)
  130.         return kGestaltImproperlyInstalled;
  131.     
  132.     return allsWell;
  133. }
  134.  
  135. Boolean sfxGestaltFunctionInstalledQQ(void)
  136. {
  137.     long            theVersion;
  138.     OSErr            gestaltError;
  139.     
  140.     gestaltError=Gestalt(sfxGetVersion, &theVersion);
  141.     return ((gestaltError==noErr) && (theVersion==1L));
  142. }
  143.